package kr.co.ham.view;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;

import kr.co.ham.control.Action;
import kr.co.ham.control.ActionImpl;
import kr.co.ham.model.Const;
import net.miginfocom.swing.MigLayout;

import org.apache.log4j.Logger;

/**
 * @see 화면 컴포넌트
 * @author hamjjang
 * @since 2013. 05. 05
 * @version 1.0
 */
public class FileNmChangView extends JFrame implements ActionListener
{
	public static Action action = new ActionImpl();  // 액션
	private static Logger logger = Logger.getLogger("filelog");
	
	public FileNmChangView() {
		setJMenuBar(Variables.menuBar); // 메뉴바설정
		
		Variables.mnFile.add(Variables.mni_orgPath);
		Variables.mnFile.add(Variables.mni_newPath);
		Variables.mnFile.add(Variables.mni_exit);
		Variables.menuBar.add(Variables.mnFile);	// 파일 메뉴 추가

		Variables.mnEdit.add(Variables.mni_change);
		Variables.mnEdit.add(Variables.mni_init);
		Variables.mnEdit.add(Variables.mni_del);
		Variables.menuBar.add(Variables.mnEdit);	// 편집 메뉴 추가
		
		
		getContentPane().setLayout(new MigLayout("", "[84.00][432.00,grow,left][83.00,fill]", "[23.00,center][23.00,center][23.00][][grow][][][][][][][][]"));
		// 원래경로 라벨
		Variables.lbl_orgPath.setFont(new Font(Const.FONTNM, Font.PLAIN, Const.FONTSIZE));
		getContentPane().add(Variables.lbl_orgPath, "cell 0 0,alignx left,aligny center");
		// 새로운경로 라벨
		Variables.lbl_newPath.setFont(new Font(Const.FONTNM, Font.PLAIN, Const.FONTSIZE));
		getContentPane().add(Variables.lbl_newPath, "cell 0 1,alignx left,aligny center");
		// 옵션 라벨
		Variables.lbl_option.setFont(new Font(Const.FONTNM, Font.PLAIN, Const.FONTSIZE));
		getContentPane().add(Variables.lbl_option, "cell 0 2,growx,aligny center");
		// 변환상태 라벨 
		Variables.lbl_stat.setFont(new Font(Const.FONTNM, Font.PLAIN, Const.FONTSIZE));
		getContentPane().add(Variables.lbl_stat, "cell 0 4,alignx leading");
		
		// 원래경로 표시창
		Variables.edt_orgPath.setFont(new Font(Const.FONTNM, Font.PLAIN, Const.FONTSIZE));
		getContentPane().add(Variables.edt_orgPath, "cell 1 0,growx");
		Variables.edt_orgPath.setColumns(10);
		// 새로운창 표시창
		Variables.edt_newPath.setFont(new Font(Const.FONTNM, Font.PLAIN, Const.FONTSIZE));
		getContentPane().add(Variables.edt_newPath, "cell 1 1,growx");
		Variables.edt_newPath.setColumns(10);
		// 사용자지정 입력창 
		Variables.edt_userDef.setFont(new Font(Const.FONTNM, Font.PLAIN, Const.FONTSIZE));
		Variables.edt_userDef.setEditable(false);
		getContentPane().add(Variables.edt_userDef, "cell 1 3,growx");
		Variables.edt_userDef.setColumns(10);
		// 상태표시창
		Variables.txt_stat.setFont(new Font(Const.FONTNM, Font.PLAIN, Const.FONTSIZE));
		Variables.txt_stat.setLineWrap(true);
		Variables.txt_stat.setEditable(false);
//		getContentPane().add(Variables.txt_stat, "cell 1 4 2 9,grow");
		JScrollPane scrollPane = new JScrollPane(Variables.txt_stat);
		getContentPane().add(scrollPane, "cell 1 4 2 9,grow");
		
		// 원래경로 불러오기 버튼 추가
		Variables.btn_openOrgPath.setFont(new Font(Const.FONTNM, Font.PLAIN, Const.FONTSIZE));
		getContentPane().add(Variables.btn_openOrgPath, "cell 2 0");
		// 새로운경로 불러오기 버튼 추가
		Variables.btn_openNewPath.setFont(new Font(Const.FONTNM, Font.PLAIN, Const.FONTSIZE));
		getContentPane().add(Variables.btn_openNewPath, "cell 2 1");
		// 변환 버튼 추가
		Variables.btn_change.setFont(new Font(Const.FONTNM, Font.PLAIN, Const.FONTSIZE));
		getContentPane().add(Variables.btn_change, "cell 2 3");
		// 라디오 버튼 추가
		Variables.buttonGroup.add(Variables.rdo_crateDtm);
		Variables.rdo_crateDtm.setFont(new Font(Const.FONTNM, Font.PLAIN, Const.FONTSIZE));
		getContentPane().add(Variables.rdo_crateDtm, "flowx,cell 1 2");
		Variables.buttonGroup.add(Variables.rdo_modDtm);
		Variables.rdo_modDtm.setFont(new Font(Const.FONTNM, Font.PLAIN, Const.FONTSIZE));
		getContentPane().add(Variables.rdo_modDtm, "cell 1 2");
		Variables.buttonGroup.add(Variables.rdo_userDef);
		Variables.rdo_userDef.setFont(new Font(Const.FONTNM, Font.PLAIN, Const.FONTSIZE));
		getContentPane().add(Variables.rdo_userDef, "cell 1 2");
		Variables.buttonGroup.add(Variables.rdo_etc);
		Variables.rdo_etc.setFont(new Font(Const.FONTNM, Font.PLAIN, Const.FONTSIZE));
		getContentPane().add(Variables.rdo_etc, "cell 1 2");
		
		// 이벤트 

		Variables.mni_orgPath.addActionListener(this);
		Variables.mni_newPath.addActionListener(this);
		Variables.mni_exit.addActionListener(this);
		Variables.mni_change.addActionListener(this);
		Variables.mni_init.addActionListener(this);
		
		Variables.btn_openOrgPath.addActionListener(this);
		Variables.btn_openNewPath.addActionListener(this);
		Variables.btn_change.addActionListener(this);

		Variables.rdo_crateDtm.addActionListener(this);
		Variables.rdo_modDtm.addActionListener(this);
		Variables.rdo_userDef.addActionListener(this);
		Variables.rdo_etc.addActionListener(this);

	}

	// 이벤트 처리
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		Object obj = e.getSource(); 
		logger.debug("actionPerformed obj : " + obj.toString());
		if(  obj == Variables.mni_orgPath 
		   || obj == Variables.btn_openOrgPath ){
			action.getOrgPath(this);
		}else if(obj == Variables.mni_newPath 
			  || obj == Variables.btn_openNewPath){
			action.getNewPath(this);
		}else 
		if(obj == Variables.mni_change 
			  || obj == Variables.btn_change){
			action.setChangeFileNm();
		}else if(obj == Variables.mni_exit){
			action.exit();
		}else if(obj == Variables.mni_init){
			action.setClear();
		}else if(obj == Variables.mni_del){
			action.setDelectOrgFiles();
		}else if(obj == Variables.rdo_crateDtm
				|| obj == Variables.rdo_modDtm
				|| obj == Variables.rdo_userDef
				|| obj == Variables.rdo_etc
		){
			JRadioButton pObj = (JRadioButton)e.getSource();
			action.setRadioStatChange(pObj);
		}
	}

	public void setInit() {
		// TODO Auto-generated method stub
		this.setSize(Const.FRAME_WIDTH, Const.FRAME_HEIGHT);
		this.setTitle("파일 이름 변화");
		this.setVisible(true);
		
	}
}
